/*
 * Service class 
 * Created on 6 juin 2013 ( Time 15:03:52 )
 */

package org.demo.typeabonnementoption.service;

import java.util.List;

import org.demo.typeabonnementoption.bean.Typeabonnementoption;
import org.demo.typeabonnementoption.dao.JpaTypeabonnementoptionDAO;
import org.telosys.starterkits.strutsjpa.EntityManagerHelper;
import org.telosys.starterkits.strutsjpa.IServices;
import javax.persistence.PersistenceException;

import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;

import org.demo.typeabonnementoption.bean.TypeabonnementoptionKey;

public class TypeabonnementoptionServices implements IServices<Typeabonnementoption, TypeabonnementoptionKey> {

	protected final Logger LOG = LoggerFactory.getLogger(TypeabonnementoptionServices.class);

	public Typeabonnementoption load(final TypeabonnementoptionKey id) {
		if (LOG.isDebugEnabled()) LOG.debug("load");
		Typeabonnementoption typeabonnementoption;
		try {
			EntityManagerHelper.beginTransaction();
			JpaTypeabonnementoptionDAO typeabonnementoptionDAO = new JpaTypeabonnementoptionDAO();
			typeabonnementoption = typeabonnementoptionDAO.findById(id);
			EntityManagerHelper.commitAndCloseEntityManager();
		} catch (PersistenceException ex) {
			LOG.error("Error", ex);
			throw ex;
		} finally {
			if (EntityManagerHelper.isCloseEntityManager() == false) EntityManagerHelper.rollback();
		}
		return typeabonnementoption ;
	}

	public Typeabonnementoption save(final Typeabonnementoption entity) {
		if (LOG.isDebugEnabled()) LOG.debug("save");
		Typeabonnementoption entityNew;
		try {
			EntityManagerHelper.beginTransaction();
			JpaTypeabonnementoptionDAO typeabonnementoptionDAO = new JpaTypeabonnementoptionDAO();
			entityNew = typeabonnementoptionDAO.update(entity);
			EntityManagerHelper.commitAndCloseEntityManager();
		} catch (PersistenceException ex) {
			LOG.error("Error", ex);
			throw ex;
		} finally {
			if (EntityManagerHelper.isCloseEntityManager() == false) EntityManagerHelper.rollback();
		}
		return entityNew;
	}

	public void delete(final TypeabonnementoptionKey id) {
		if (LOG.isDebugEnabled()) LOG.debug("delete");
		try {
			EntityManagerHelper.beginTransaction();
			JpaTypeabonnementoptionDAO typeabonnementoptionDAO = new JpaTypeabonnementoptionDAO();
			typeabonnementoptionDAO.delete(id);
			EntityManagerHelper.commitAndCloseEntityManager();	
		} catch (PersistenceException ex) {
			LOG.error("Error", ex);
			throw ex;
		} finally {
			if (EntityManagerHelper.isCloseEntityManager() == false) EntityManagerHelper.rollback();
		}
	}

	public List<Typeabonnementoption> search(final Typeabonnementoption typeabonnementoption) {
		if (LOG.isDebugEnabled()) LOG.debug("search");
		List<Typeabonnementoption> liste;
		try {
			EntityManagerHelper.beginTransaction();
			JpaTypeabonnementoptionDAO typeabonnementoptionDAO = new JpaTypeabonnementoptionDAO();
			liste = typeabonnementoptionDAO.search(typeabonnementoption);
			EntityManagerHelper.commitAndCloseEntityManager();
		} catch (PersistenceException ex) {
			LOG.error("Error", ex);
			throw ex;
		} finally {
			if (EntityManagerHelper.isCloseEntityManager() == false) EntityManagerHelper.rollback();
		}
		return liste;
	}

}
